Rule-based prioritization of social data

ABSTRACT

A method of prioritizing feed items based on rules is provided. User input establishes one or more rules to prioritize a feed item, wherein at least one of the one or more rules incorporates the input data. Such user input may include user-created data or feed metrics. The one or more rules may be weighted. Additional user input configures one or more message cues. A plurality of feed items are prioritized based on the one or more rules. The plurality of feed items are associated with a plurality of feeds, wherein each feed is associated with an object stored in a database system. The plurality of feed items are then displayed in combination with the one or more message cues to a plurality of users of the database system.

PRIORITY AND RELATED APPLICATION DATA

This application is a continuation to co-pending and commonly assignedU.S. patent application Ser. No. 13/112,805 titled, “RULE-BASEDPRIORITIZATION OF SOCIAL DATA,” by Fischer et al, filed May 20, 2011,which claims priority to U.S. Provisional Application No. 61/346,839,entitled “METRICS BASED ACCESSING OF SOCIAL THREADS AND RULE BASEDPRIORITIZATION OF SOCIAL DATA,” filed on May 20, 2010, by Ronald F.Fischer, and U.S. Provisional Application No. 61/354,638, entitled“METHODS AND SYSTEMS FOR PROVIDING A SECURE ONLINE FEED IN AMULTI-TENANT DATABASE ENVIRONMENT,” filed on Jun. 14, 2010, by SteveSlater, the contents of which are incorporated herein by reference intheir entirety.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

BACKGROUND

The present invention relates generally to database systems, and moreparticularly to proactively prioritizing social data based on persistentrules and to ranking elements in a feed in an on-demand enterpriseservices environment.

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart. The subject matter in the background section merely representsdifferent approaches, which in and of themselves may also be inventions.

BRIEF SUMMARY

The present invention provides systems, apparatus, and methods forsocial data analysis and for ranking elements of a feed, and moreparticularly to proactively prioritizing social data based on persistentrules.

A method of prioritizing feed items based on rules is provided. Userinput establishes one or more rules to prioritize a feed item, whereinat least one of the one or more rules incorporates the input data. Theone or more rules may be weighted. Additional user input configures oneor more message cues. A plurality of feed items are prioritized based onthe one or more rules. The plurality of feed items are associated with aplurality of feeds, wherein each feed is associated with an objectstored in a database system. The plurality of feed items are thendisplayed in combination with the one or more message cues to aplurality of users of the database system.

While the present invention is described with reference to an embodimentin which techniques for performing searches of feeds in an on-demandenterprise services environment are implemented in a system having anapplication server providing a front end for an on-demand databaseservice capable of supporting multiple tenants, the present invention isnot limited to multi-tenant databases nor deployment on applicationservers. Embodiments may be practiced using other databasearchitectures, i.e., ORACLE®, DB2® by IBM and the like without departingfrom the scope of the embodiments claimed.

Any of the above embodiments may be used alone or together with oneanother in any combination. Inventions encompassed within thisdisclosure may also include embodiments that are only partiallymentioned or alluded to or are not mentioned or alluded to at all inthis brief summary or in the abstract. Although various embodiments ofthe invention may have been motivated by various deficiencies with theprior art, which may be discussed or alluded to in one or more places inthe disclosure, the embodiments of the invention do not necessarilyaddress any of these deficiencies. In other words, different embodimentsof the invention may address different deficiencies that may bediscussed in the disclosure. Some embodiments may only partially addresssome deficiencies or just one deficiency that may be discussed in thedisclosure, and some embodiments may not address any of thesedeficiencies.

Reference to the remaining portions of the disclosure, including thedrawings and claims, will realize other features and advantages of thepresent invention. Further features and advantages of the presentinvention, as well as the structure and operation of various embodimentsof the present invention, are described in detail below with respect tothe accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the following drawings like reference numbers are used to refer tolike elements. Although the following figures depict various examples ofthe invention, the invention is not limited to the examples depicted inthe figures.

FIG. 1 illustrates a block diagram of an environment wherein anon-demand database service might be used

FIG. 2 illustrates a block diagram of an embodiment of elements of FIG.1 and various possible interconnections between these elements accordingto an embodiment of the present invention.

FIG. 3 is a flowchart of a method 300 for proactively prioritizingsocial data based on persistent rules and for ranking elements in afeed.

DEFINITIONS

As used herein, the term “multi-tenant database system” refers to thosesystems in which various elements of hardware and software of thedatabase system may be shared by one or more customers. For example, agiven application server may simultaneously process requests for a greatnumber of customers, and a given database table may store rows for apotentially much greater number of customers. As used herein, the term“query plan” refers to a set of steps used to access information in adatabase system.

As used herein, the term “user's profile” includes data about the userof the database system. The data can include general information, suchas title, phone number, a photo, a biographical summary, and a status(e.g., text describing what the user is currently doing). As mentionedbelow, the data can include messages created by other users. Where thereare multiple tenants, a user is typically associated with a particulartenant. For example, a user could be a salesperson of a company that isa tenant of the database system that provides a database service.

As used herein, the term “record” refers to an instance of a data objectcreated by a user of the database service, for example, about aparticular (actual or potential) business relationship or project. Thedata object can have a data structure defined by the database service (astandard object) or defined by a subscriber (custom object). Forexample, a record can be for a business partner or potential businesspartner (e.g., a client, vendor, distributor, etc.) of the user, and caninclude an entire company, subsidiaries, or contacts at the company. Asanother example, a record can be a project that the user is working on,such as an opportunity (e.g., a possible sale) with an existing partner,or a project that the user is trying to get. In one embodimentimplementing a multi-tenant database, all of the records for the tenantshave an identifier stored in a common table. A record has data fieldsthat are defined by the structure of the object (e.g., fields of certaindata types and purposes). A record can also have custom fields definedby a user. A field can be another record or include links thereto,thereby providing a parent-child relationship between the records.

As used herein, the term “feed” includes a combination (e.g., a list) offeed items. As user herein, the term “feed item” (or feed element)refers to information about a user (“profile feed”) of the database orabout a record (“record feed”) in the database. A user following theuser or record can receive the associated feed items. The feed itemsfrom all of the followed users and records can be combined into a singlefeed for the user.

As examples, a “feed item” can be a message and story (also called afeed tracked change). A feed can be a combination of messages andstories. Messages include text created by a user, and may include otherdata as well. Examples of messages include posts, status updates, andcomments. Messages can be created for a user's profile or for a record.Posts can be created by various users, potentially any user, althoughsome restrictions can be applied. As an example, posts can be made to awall section of a user's profile (which can include a number of recentposts) or a section of a record that includes multiple posts. The postscan be organized in chronological order. In contrast to a post, a statusupdate changes a status of a user and is made by that user. Othersimilar sections of a user's profile can also include an “About”section. A record can also have a status, whose update can be restrictedto the owner of the record. The owner can be a single user, multipleusers, or a group. In one embodiment, there is only one status for arecord. In one embodiment, a comment can be made on any feed item. Inanother embodiment, comments are organized as a list explicitly tied toa particular story, post, or status update. In this embodiment, commentsmay not be listed in the first layer (in a hierarchal sense) of feeditems, but listed as a second layer branching from a particular firstlayer feed item.

A “story” is data representing an event, and can include text generatedby the database system in response to the event. In one embodiment, thedata can initially be stored, and then the database system can later usethe data to create text for describing the event. Both the data and/orthe text can be a story, as used herein. In various embodiments, anevent can be an update of a record and/or can be triggered by a specificaction by a user. Which actions trigger an event can be configurable.Which events have stories created and which stories are sent to whichusers can also be configurable. Messages and stories can be stored as afield or child object of the record. For example, the feed can be storedas a child object of the record.

As used herein, a “group” is a collection of users. In some aspects, thegroup may be defined as users with a same or similar attribute, or bymembership. In one embodiment, a “group feed” includes any feed itemabout any user in a group. In another embodiment, a “group feed”includes teed items that are about the group as a whole. In oneimplementation, the feed items for a group are only posts and comments.

As used herein, an “entity feed” or “record feed” refers to a feed offeed items about a particular record in the database, such as storiesabout changes to the record and posts made by users about the record. Anentity feed can be composed of any type of feed item. Such a feed can bedisplayed on a page (e.g., a web page) associated with the record (e.g.,a home page of the record). As used herein, a “profile feed” is a feedof feed items about a particular user. In one embodiment, the feed itemsfor a profile feed are posts and comments that other users make about orsend to the particular user, and status updates made by the user. Such aprofile feed can be displayed on a page associated with the particularuser. In another embodiment, feed items in a profile feed could includeposts made by the particular user and feed tracked changes (stories)initiated based on actions of the particular user.

DETAILED DESCRIPTION

The present invention provides systems and methods for social dataanalysis and ranking elements in a feed, and more particularly forproactively prioritizing social data based on persistent rules. Thevarious embodiments are particularly useful in an on-demand multi-tenantdatabase and/or application service.

General Overview

Systems, apparatus, and methods are provided for implementing enterpriselevel social and business information networking Such embodiments canprovide more efficient use of a database system. For instance, a user ofa database system may not easily know when important information in thedatabase has changed, e.g., about a project or client. Embodiments canprovide stories about such changes and other events, thereby keepingusers informed.

By way of example, a user can update a record (e.g., an opportunity suchas a possible sale of 1000 computers). Once the update has been made, astory about the update can then automatically be sent (e.g., in a feed)to anyone subscribing to the opportunity or to the user. Thus, the userdoes not need to contact a manager regarding the change in theopportunity, since the story about the update is sent via a feed rightto the manager's feed page (or other page).

Next, mechanisms and methods for providing systems and methods forimplementing enterprise level social and business information networkingwill be described with reference to example embodiments. First, anoverview of an example database system is described, and then exampleembodiments regarding display of feeds are also described.

System Overview

FIG. 1 illustrates a block diagram of an environment 10 wherein anon-demand database service might be used. Environment 10 may includeuser systems 12, network 14, system 16, processor system 17, applicationplatform 18, network interface 20, tenant data storage 22, system datastorage 24, program code 26, and process space 28. In other embodiments,environment 10 may not have all of the components listed and/or may haveother elements instead of, or in addition to, those listed above.

Environment 10 is an environment in which an on-demand database serviceexists. User system 12 may be any machine or system that is used by auser to access a database user system. For example, any of user systems12 can be a handheld computing device, a mobile phone, a laptopcomputer, a work station, and/or a network of computing devices. Asillustrated in FIG. 1 (and in more detail in FIG. 2) user systems 12might interact via a network 14 with an on-demand database service,which is system 16.

An on-demand database service, such as system 16, is a database systemthat is made available to outside users that do not need to necessarilybe concerned with building and/or maintaining the database system, butinstead may be available for their use when the users need the databasesystem (e.g., on the demand of the users). Some on-demand databaseservices may store information from one or more tenants stored intotables of a common database image to form a multi-tenant database system(MTS). Accordingly, “on-demand database service 16” and “system 16” willbe used interchangeably herein. A database image may include one or moredatabase objects. A relational database management system (RDMS) or theequivalent may execute storage and retrieval of information against thedatabase object(s). Application platform 18 may be a framework thatallows the applications of system 16 to run, such as the hardware and/orsoftware, e.g., the operating system. In an embodiment, on-demanddatabase service 16 may include an application platform 18 that enablescreation, managing and executing one or more applications developed bythe provider of the on-demand database service, users accessing theon-demand database service via user systems 12, or third partyapplication developers accessing the on-demand database service via usersystems 12.

The users of user systems 12 may differ in their respective capacities,and the capacity of a particular user system 12 might be entirelydetermined by permissions (permission levels) for the current user. Forexample, where a salesperson is using a particular user system 12 tointeract with system 16, that user system has the capacities allotted tothat salesperson. However, while an administrator is using that usersystem to interact with system 16, that user system has the capacitiesallotted to that administrator. In systems with a hierarchical rolemodel, users at one permission level (profile type) may have access toapplications, data, and database information accessible by a lowerpermission level user, but may not have access to certain applications,database information, and data accessible by a user at a higherpermission level. Thus, different users will have different capabilitieswith regard to accessing and modifying application and databaseinformation, depending on a user's security or permission level, alsocalled authorization.

Network 14 is any network or combination of networks of devices thatcommunicate with one another. For example, network 14 can be any one orany combination of a LAN (local area network), WAN (wide area network),telephone network, wireless network, point-to-point network, starnetwork, token ring network, hub network, or other appropriateconfiguration. As the most common type of computer network in currentuse is a TCP/IP (Transfer Control Protocol and Internet Protocol)network, such as the global internetwork of networks often referred toas the “Internet” with a capital “I,” that network will be used in manyof the examples herein. However, it should be understood that thenetworks that embodiments might be use are not so limited, althoughTCP/IP is a frequently implemented protocol.

User systems 12 might communicate with system 16 using TCP/IP and, at ahigher network level, use other common Internet protocols tocommunicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTPis used, user system 12 might include an HTTP client commonly referredto as a “browser” for sending and receiving HTTP messages to and from anHTTP server at system 16. Such an HTTP server might be implemented asthe sole network interface between system 16 and network 14, but othertechniques might be used as well or instead. In some implementations,the interface between system 16 and network 14 includes load sharingfunctionality, such as round-robin HTTP request distributors to balanceloads and distribute incoming HTTP requests evenly over a plurality ofservers. At least as for the users that are accessing that server, eachof the plurality of servers has access to the MTS data; however, otheralternative configurations may be used instead.

In one embodiment, system 16, shown in FIG. 1, implements a web-basedcustomer relationship management (CRM) system. For example, in oneembodiment, system 16 includes application servers configured toimplement and execute CRM software applications as well as providerelated data, code, forms, webpages and other information to and fromuser systems 12 and to store to, and retrieve from, a database systemrelated data, objects, and Webpage content. With a multi-tenant system,data for multiple tenants may be stored in the same physical databaseobject, however, tenant data typically is arranged so that data of onetenant is kept logically separate from that of other tenants so that onetenant does not have access to another tenant's data, unless such datais expressly shared. In certain embodiments, system 16 implementsapplications other than, or in addition to, a CRM application. Forexample, system 16 may provide tenant access to multiple hosted(standard and custom) applications, including a CRM application. User(or third party developer) applications, which may or may not includeCRM, may be supported by the application platform 18, which managescreation, storage of the applications into one or more database objectsand executing of the applications in a virtual machine in the processspace of the system 16.

One arrangement for elements of system 16 is shown in FIG. 1, includinga network interface 20, application platform 18, tenant data storage 22for tenant data 23, system data storage 24 for system data 25 accessibleto system 16 and possibly multiple tenants, program code 26 forimplementing various functions of system 16, and a process space 28 forexecuting MTS system processes and tenant-specific processes, such asrunning applications as part of an application hosting service.Additional processes that may execute on system 16 include databaseindexing processes.

Several elements in the system shown in FIG. 1 include conventional,well-known elements that are explained only briefly here. For example,each user system 12 could include a desktop personal computer,workstation, laptop, PDA, cell phone, or any wireless access protocol(WAP) enabled device or any other computing device capable ofinterfacing directly or indirectly to the Internet or other networkconnection. User system 12 typically runs an HTTP client, e.g., abrowsing program, such as Microsoft's Internet Explorer browser,Netscape's Navigator browser, Opera's browser, or a WAP-enabled browserin the case of a cell phone, PDA or other wireless device, or the like,allowing a user (e.g., subscriber of the multi-tenant database system)of user system 12 to access, process and view information, pages andapplications available to it from system 16 over network 14. Each usersystem 12 also typically includes one or more user interface devices,such as a keyboard, a mouse, trackball, touch pad, touch screen, pen orthe like, for interacting with a graphical user interface (GUI) providedby the browser on a display (e.g., a monitor screen, LCD display, etc.)in conjunction with pages, forms, applications and other informationprovided by system 16 or other systems or servers. For example, the userinterface device can be used to access data and applications hosted bysystem 16, and to perform searches on stored data, and otherwise allow auser to interact with various GUI pages that may be presented to a user.As discussed above, embodiments are suitable for use with the Internet,which refers to a specific global internetwork of networks. However, itshould be understood that other networks can be used instead of theInternet, such as an intranet, an extranet, a virtual private network(VPN), a non-TCP/IP based network, any LAN or WAN or the like.

According to one embodiment, each user system 12 and all of itscomponents are operator configurable using applications, such as abrowser, including computer code run using a central processing unitsuch as an Intel Pentium® processor or the like. Similarly, system 16(and additional instances of an MTS, where more than one is present) andall of their components might be operator configurable usingapplication(s) including computer code to run using a central processingunit such as processor system 17, which may include an Intel Pentium®processor or the like, and/or multiple processor units. A computerprogram product embodiment includes a machine-readable storage medium(media) having instructions stored thereon/in which can be used toprogram a computer to perform any of the processes of the embodimentsdescribed herein. Computer code for operating and configuring system 16to intercommunicate and to process webpages, applications and other dataand media content as described herein are preferably downloaded andstored on a hard disk, but the entire program code, or portions thereof,may also be stored in any other volatile or non-volatile memory mediumor device as is well known, such as a ROM or RAM, or provided on anymedia capable of storing program code, such as any type of rotatingmedia including floppy disks, optical discs, digital versatile disk(DVD), compact disk (CD), microdrive, and magneto-optical disks, andmagnetic or optical cards, nanosystems (including molecular memory ICs),or any type of media or device suitable for storing instructions and/ordata. Additionally, the entire program code, or portions thereof, may betransmitted and downloaded from a software source over a transmissionmedium, e.g., over the Internet, or from another server, as is wellknown, or transmitted over any other conventional network connection asis well known (e.g., extranet, VPN, LAN, etc.) using any communicationmedium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as arewell known. It will also be appreciated that computer code forimplementing embodiments of the present invention can be implemented inany programming language that can be executed on a client system and/orserver or server system such as, for example, C, C++, HMTL, any othermarkup language, Java™, JavaScript, ActiveX, any other scriptinglanguage, such as VBScript, and many other programming languages as arewell known may be used. (Java™ is a trademark of Sun Microsystems,Inc.),

According to one embodiment, each system 16 is configured to providewebpages, forms, applications, data and media content to user (client)systems 12 to support the access by user systems 12 as tenants of system16. As such, system 16 provides security mechanisms to keep eachtenant's data separate unless the data is shared. If more than one MTSis used, they may be located in dose proximity to one another e.g., in aserver farm located in a single building or campus), or they may bedistributed at locations remote from one another (e.g., one or moreservers located in city A and one or more servers located in city B). Asused herein, each MTS could include one or more logically and/orphysically connected servers distributed locally or across one or moregeographic locations. Additionally, the term “server” is meant toinclude a computer system, including processing hardware and processspace(s), and an associated storage system and database application(e.g., OODBMS or RDBMS) as is well known in the art. It should also beunderstood that “server system” and “server” are often usedinterchangeably herein. Similarly, the database object described hereincan be implemented as single databases, a distributed database, acollection of distributed databases, a database with redundant online oroffline backups or other redundancies, etc., and might include adistributed database or storage network and associated processingintelligence.

FIG. 2 also illustrates environment 10. However, in FIG. 2 elements ofsystem 16 and various interconnections in an embodiment are furtherillustrated. FIG. 2 shows that user system 12 may include processorsystem 12A, memory system 12B, input system 12C, and output system 12D.FIG. 2 shows network 14 and system 16. FIG. 2 also shows that system 16may include tenant data storage 22, tenant data 23, system data storage24, system data 25, User interface (UI) 30, Application Programinterface (API) 32, PL/SOQL 34, save routines 36, application setupmechanism 38, applications servers 100 ₁-100 _(N), system process space102, tenant process spaces 104, tenant management process space 110,tenant storage area 112, user storage 114, and application metadata 116.In other embodiments, environment 10 may not have the same elements asthose listed above and/or may have other elements instead of, or inaddition to, those listed above.

User system 12, network 14, system 16, tenant data storage 22, andsystem data storage 24 were discussed above in FIG. 1. Regarding usersystem 12, processor system 12A may be any combination of one or moreprocessors. Memory system 12B may be any combination of one or morememory devices, short term, and/or long term memory. Input system 12Cmay be any combination of input devices, such as one or more keyboards,mice, trackballs, scanners, cameras, and/or interfaces to networks.Output system 12D may be any combination of output devices, such as oneor more monitors, printers, and/or interfaces to networks. As shown byFIG. 2, system 16 may include a network interface 20 (of FIG. 1)implemented as a set of HTTP application servers 100, an applicationplatform 18, tenant data storage 22, and system data storage 24. Alsoshown is system process space 102, including individual tenant processspaces 104 and a tenant management process space 110. Each applicationserver 100 may be configured to tenant data storage 22 and the tenantdata 23 therein, and system data storage 24 and the system data 25therein to serve requests of user systems 12. The tenant data 23 mightbe divided into individual tenant storage areas 112, which can be eithera physical arrangement and/or a logical arrangement of data. Within eachtenant storage area 112, user storage 114 and application metadata 116might be similarly allocated for each user. For example, a copy of auser's most recently used (MRU) items might be stored to user storage114. Similarly, a copy of MRU items for an entire organization that is atenant might be stored to tenant storage area 112. A UI 30 provides auser interface and an API 32 provides an application programmerinterface to system 16 resident processes to users and/or developers atuser systems 12. The tenant data and the system data may be stored invarious databases, such as one or more Oracle™ databases.

Application platform 18 includes an application setup mechanism 38 thatsupports application developers' creation and management ofapplications, which may be saved as metadata into tenant data storage 22by save routines 36 for execution by subscribers as one or more tenantprocess spaces 104 managed by tenant management process 110 for example.Invocations to such applications may be coded using PL/SOQL 34 thatprovides a programming language style interface extension to API 32. Adetailed description of some PL/SOQL language embodiments is discussedin commonly owned U.S. Pat. No. 7,730,478 entitled, METHOD AND SYSTEMFOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANTON-DEMAND DATABASE SERVICE, by Craig Weissman, filed Sep. 21, 2007,which is incorporated in its entirety herein for all purposes.Invocations to applications may be detected by one or more systemprocesses, which manages retrieving application metadata 116 for thesubscriber making the invocation and executing the metadata as anapplication in a virtual machine.

Each application server 100 may be communicably coupled to databasesystems, e.g., having access to system data 25 and tenant data 23, via adifferent network connection. For example, one application server 100 ₁might be coupled via the network 14 (e.g., the Internet), anotherapplication server 100 _(N−1) might be coupled via a direct networklink, and another application server 100 _(N) might be coupled by yet adifferent network connection. Transfer Control Protocol and InternetProtocol (TCP/IP) are typical protocols for communicating betweenapplication servers 100 and the database system. However, it will beapparent to one skilled in the art that other transport protocols may beused to optimize the system depending on the network interconnect used.

In certain embodiments, each application server 100 is configured tohandle requests for any user associated with any organization that is atenant. Because it is desirable to be able to add and remove applicationservers from the server pool at any time for any reason, there ispreferably no server affinity for a user and/or organization to aspecific application server 100. In one embodiment, therefore, aninterface system implementing a toad balancing function (e.g., an F5Big-IP toad balancer) is communicably coupled between the applicationservers 100 and the user systems 12 to distribute requests to theapplication servers 100. In one embodiment, the load balancer uses aleast connections algorithm to route user requests to the applicationservers 100. Other examples of load balancing algorithms, such as roundrobin and observed response time, also can be used. For example, incertain embodiments, three consecutive requests from the same user couldhit three different application servers 100, and three requests fromdifferent users could hit the same application server 100. In thismanner, system 16 is multi-tenant, wherein system 16 handles storage of,and access to, different objects, data and applications across disparateusers and organizations.

As an example of storage, one tenant might be a company that employs asales force where each salesperson uses system 16 to manage their salesprocess. Thus, a user might maintain contact data, leads data, customerfollow-up data, performance data, goals and progress data, etc., allapplicable to that user's personal sales process (e.g., in tenant datastorage 22). In an example of a MTS arrangement, since all of the dataand the applications to access, view, modify, report, transmit,calculate, etc., can be maintained and accessed by a user system havingnothing more than network access, the user can manage his or her satesefforts and cycles from any of many different user systems. For example,if a salesperson is visiting a customer and the customer has Internetaccess in their lobby, the salesperson can obtain critical updates as tothat customer while waiting for the customer to arrive in the lobby.

While each user's data might be separate from other users' dataregardless of the employers of each user, some data might beorganization-wide data shared or accessible by a plurality of users orall of the users fir a given organization that is a tenant. Thus, theremight be some data structures managed by system 16 that are allocated atthe tenant level while other data structures might be managed at theuser level. Because an MTS might support multiple tenants includingpossible competitors, the MTS should have security protocols that keepdata, applications, and application use separate. Also, because manytenants may opt for access to an MTS rather than maintain their ownsystem, redundancy, up-time, and backup are additional functions thatmay be implemented in the MTS. In addition to user-specific data andtenant-specific data, system 16 might also maintain system level datausable by multiple tenants or other data. Such system level data mightinclude industry reports, news, postings, and the like that are sharableamong tenants.

In certain embodiments, user systems 12 (which may be client systems)communicate with application servers 100 to request and updatesystem-level and tenant-level data from system 16 that may requiresending one or more queries to tenant data storage 22 and/or system datastorage 24. System 16 (e.g., an application server 100 in system 16)automatically generates one or more SQL statements (e.g., one or moreSQL queries) that are designed to access the desired information. Systemdata storage 24 may generate query plans to access the requested datafrom the database.

Each database can generally be viewed as a collection of objects, suchas a set of logical tables, containing data fitted into predefinedcategories. A “table” is one representation of a data object, and may beused herein to simplify the conceptual description of objects and customobjects according to the present embodiments. It should be understoodthat “table” and “object type” may be used interchangeably herein. Eachtable generally contains one or more data categories logically arrangedas columns or fields in a viewable schema. Each row or record of a tablecontains an instance of data for each category (type) defined by thefields. For example, a CRM database may include a table that describes acustomer with fields for basic contact information such as name,address, phone number, fax number, etc. Another table might describe apurchase order, including fields for information such as customer,product, sale price, date, etc. In some multi-tenant database systems,standard entity tables might be provided tier use by all tenants. ForCRM database applications, such standard entities might include tablesfor Account, Contact, Lead, Opportunity data, and other object types,each containing pre-defined fields. It should be understood that theword “entity” may also be used interchangeably herein with “object” and“table”, when entity or object is referring to a collection of objectsor entities of a particular type.

In some multi-tenant database systems, tenants may be allowed to createand store custom objects, or they may be allowed to customize standardentities or objects, for example by creating custom fields for standardobjects, including custom index fields, U.S. Pat. No. 7,779,039,entitled “Custom Entities and Fields in a Multi-Tenant Database System”,by Craig Weissman, filed Apr. 2, 2004, which is hereby incorporatedherein by reference, teaches systems and methods for creating customobjects as well as customizing standard objects in a multi-tenantdatabase system. In certain embodiments, for example, all custom entitydata rows are stored in a single multi-tenant physical table, which maycontain multiple logical tables per organization. It is transparent tocustomers that their multiple “tables” are in fact stored in one largetable or that their data may be stored in the same table as the data ofother customers.

Rule-Based Prioritization of Social Data

Traditional social data prioritization typically involves sortingmessages in a feed based upon the date that the feed was either createdor last commented upon. At times, too many feed elements may populate auser's feed viewer, e.g., resulting from following many records,peoples, and entities. A user may not be able to track all of them, andthus a user can tend to miss the items that are most important to theuser or to the business of the tenant, which can be problematic. In someinstances, a filter based upon user, group, channel, subject, or keywordcan be specified on the current results to reduce and focus the set ofvisible messages. What has not been demonstrated is a system forproactively prioritizing such messages and other social data based uponpersistent rules.

Rule-based systems have been used in other areas to sort or discardmessages (for instance, routing systems or email systems). Social datapresents a challenge different from existing systems because themessages tend to be individually small, large in number, diverse incontent, and ephemeral. In order to account for these differences, anovel system for prioritizing, annotating, and demarcating this data isdesirable. Such a system is ideally able to analyze the data based upona set of established rules, quickly operate on the data to properlyorganize it, and display the data appropriately.

According to one embodiment, three components of a such a rule-basedprioritization system include:

1. Rule Criteria: a rule specification format and a method for creationof rules;

2. Message Cues: a method for defining and assigning visual and auditorycues based on the rules; and

3. Rules Engine: an engine for applying the rules, creating the cues,and displaying the social data in near real time.

FIG. 3 is a flowchart of a method 300 for proactively prioritizingsocial data based on persistent rules and for ranking elements in afeed. In some embodiments, input data may be submitted to the rulesengine, which then analyzes the data and prepares it for use in creatingand/or applying rules (310). For example, in some embodiments, feedmetrics may be incorporated into the rules; feed metrics are describedin further detail in U.S. patent application Ser. No. 13/111,183(Attorney Docket No. SLFCP061/374US1), claiming priority to U.S.Provisional Patent Application No. 61/346,839, the content of which isincorporated herein by reference for all purposes. In some embodiments,a rule may create a benchmark with respect to a feed metric, wherein afeed item that meets or exceeds the benchmark is then prioritized. Insome embodiments, other input data (user-created data) may be submittedto and analyzed by the rules engine, such as, for example, organizationcharts, financial/market data, user profiles, entity profiles, Internetcontent, internal knowledge bases, or customer support databases.

Rules and Rule Criteria

In one embodiment, a user interface is provided to create rule criteriaand establish rules (320). In one embodiment, the user interface allowsthe user to view input data and analysis thereof. In one embodiment, therules engine may evaluate one or more of the following criteria:

-   -   1. Message originator: The user, group, or data source that        originated the message (described in further detail below).    -   2. The subject(s) or keyword(s) within the message content.    -   3. The target(s) of the message (e.g., an individual, group, or        data source).    -   4. The priority of the message.    -   5. The message timestamp.    -   6. Metrics based upon message usage (e.g., number of comments,        views, etc.).    -   7. Additional metrics and information useful for determining the        importance/visibility/priority of the social data (e.g.,        popularity)    -   8. Content and/or attachment type (images, video, scripts, music        . . . ).        These criteria are combinable to form an individual rule. A        pseudo code example of criteria usage in a rule might be        expressed something like: prioritize data from user “Washington”        with “attached content”. Criteria may be user-specific or        user-independent. User-specific rules may be customized for a        particular user who is viewing their feed items.        User-independent rules may apply to all users or to designated        groups of users (e.g., all users within a particular department,        or all users working on a particular project or subject matter        area).

In some embodiments, this criteria accounts for popularity/votes. Forexample, other users (e.g., who are intended recipients) can specify aspecific level of popularity or vote for whether a feed elements wasuseful or not. The number of times that a feed element has been viewedcan also be used.

In some embodiments, rules may be prioritized and/or weighted (330).Rules may also be hierarchical so that it is possible to overridegeneral rules with specific exceptions.

In some embodiments, rules may be persisted. Rule sets may also bedefinable, and shareable so that different users can share relevantrules. One example of the use of a shareable rule set is a scenariowhere an administrator would like to set policy for social data bydefining rules on the data.

The rules themselves may be expressed in XML, text, binary, or any otherconventional format. In any case, the format must be machine-readable sothat the rules engine can process it.

Social Data Cues

In one embodiment, a range of one or more cues are associated withmessages so that users can differentiate between various events andstatus updates associated with the social data. In one embodiment, oneor more message cues may be set up and applied by the rules engine(340)—such message cues may configure the visual presentation of thefeed or auditory effects presented in association with the feed. Someexamples of message cues include the following:

-   -   1. Priority placement in the message list. This is extremely        important as short-lived messages will quickly disappear into        the past, if not placed appropriately.    -   2. Color or hue    -   3. Size of display/number of lines displayed    -   4. Audible tones (note: different tones can be used to indicate        different events associated with social data)    -   5. Flashing/blinking/motion cues, which should be used sparingly        but are very effective for drawing attention to data    -   6. Badges (small icons appearing with the social data)        indicating status or criteria.    -   7. Grouping of social data can be a useful cue for indicating        related information.        Adding cues to the pseudo code example from above could result        in the following: prioritize data from user “Washington” with        “attached content” to “top of display” with color “red”.

Once the message cues are set up, the rules engine can commence applyingrules to prioritize feed content for user consumption (350) and displayfeed content with message cues applied in accordance with the rule-basedprioritization (360). In one embodiment, the feed elements for feedsthat a user has requested can be prioritized into certain levels in themessage list for viewing by that user. In embodiments using ranking,each feed element can have unique one level (rank) or multiple feedelements can have the same level (rank). In another embodiment, the feedelements are ranked (or otherwise prioritized) at the source feed (e.g.,ranked only against the feed elements for a particular record, person,or entity). This ranking may be against feed elements that may not beviewable for all users. This ranking (priority levels) then can beprovided to the intended recipient. For example, each feed element canhave a priority level, as determined at the source feed, and the levelis supplied with the feed element to the intended recipients. In yetanother embodiment, both types of rankings are performed. Thus, theranking from the source (e.g., ranking between elements for a particularobject) may then be used to determine the rankings for feed elements fora particular user. The feed elements can then be displayed in an orderby rank, or have highlighting or other markings to denote differentrankings

The prioritization can allow a user to identify more important feedelements, and thus not miss important information. The feed elements canbe prioritized based on a variety of factors, which may all be combined,only a couple or more combined, or used independently. In oneimplementation, a user or admin of a tenant can specify which factorsare to be used.

In various embodiments, a feed can have multiple views including rank bypopularity or level of importance. Feed elements can be sorted bypopularity. A separate feed may be created of items not to miss (e.g.,feed elements of a highest priority level).

In one embodiment, a user can tweak weights for each of thesecategories. In another embodiment, a user can flag a certain rule-basedcategory as “always sticky, float to top, etc. . . . ” so that it isalways displayed first in the list.

Rules Engine

According to one embodiment, a rules engine is provided that validatesthe rules, applies them in a consistent fashion, and resolves conflicts,applying the appropriate message cues to the resulting messages so thatthey can be displayed appropriately. The rules engine will not simplymanage new messages, rather it will adjust the entire message backlogbased upon incoming messages and changes to existing threads, as somerules may adjust priority or grouping of rules. Some rules may result inthe demotion or deletion of social data.

One embodiment of a rules engine may consist of multiple stages. Thefirst stage would execute after rules have been created but before theyare applied to social data. It would process and organize the rules sothat they can be applied quickly and with the right priority to futuredata. This stage would consider the rules, the hierarchy, and anyadjustments/exceptions relevant to them to create a run time rule set.This stage must he able to resolve apparent conflicts in the input ruleset.

The second stage would execute at the time that the social data isavailable. It would apply the rule set to both the individual messagesand the entire thread of social data in close to real time. It wouldneed to be able to compare the rule results of previous messages todetermine how new messages should compare to them. It should be able tospecify the appropriate cues for each particular message. It must beable to handle changes in the rule set.

In one embodiment, updated or new input data can be incorporated backinto the rules engine (370). In some embodiments, with certain types ofinput data, the input data can be incorporated on the fly, when therules have been established to account for variable input. For example,as message traffic system-wide increases or decreases, the system mayautomatically adjust the maximum age of a message that may be designatedas “recent” and displayed in a special font or with a special badge. Inanother example, when a new employee is added to a team, the update tothe organizational chart may be submitted to the rules engine to ensurethat prioritization rules applying to the team are also applied to thenew employee.

Overriding Rules

In one embodiment, a user may indicate that they would either like topreserve or discard the rules processing for a message thread, ormanually increase/decrease the “priority.” This real-time control grantsusers the ability to make adjustments based upon their perceived messageimportance, possibly overriding pre-specified rules. If properlyimplemented this control effectively allows users to create rulesimpromptu rather than specifying them all beforehand. Users may alsodetermine which rule was applied and why, so that they can refine theiroptions.

Message Origination

In some embodiments, the rules engine is aware of the organizationalpersonnel structure. Message posted by someone higher up in the chartmay receive higher priority. Messages from people in the same team,department, or division as the user or from the same territory as thatof the user may have a higher rank. Messages from people who work on thesame projects or cases (e.g., Accounts, Leads) as the user may have ahigher priority as well. In some embodiments, the user can designatesome people as “special” to prioritize feed elements from or related tothe “special” person. In some embodiments, prioritization may bedesignated on a relative basis or on an absolute basis.

In some embodiments, automated messages from Opportunities may bedesignated as having higher priority than random postings. In someembodiments, automated messages from Contacts or from an Account may bedesignated as having a higher priority, but perhaps not as high as anactive Opportunity.

Some feed items may be automatically generated during operations upondata records or machine events. Such message origination from a datasource may also provide another basis fir ranking.

The specific details of particular embodiments may be combined anysuitable manner without departing from the spirit and scope ofembodiments of the invention. However, other embodiments of theinvention may be directed to specific embodiments relating to eachindividual aspect, or specific combinations of these individual aspects.

It should be understood that any of the embodiments of the presentinvention can be implemented in the form of control logic using hardwareand/or using computer software in a modular or integrated manner. Basedon the disclosure and teachings provided herein, a person of ordinaryskill in the art will know and appreciate other ways and/or methods toimplement embodiments of the present invention using hardware and acombination of hardware and software.

Any of the software components or functions described in thisapplication may be implemented as software code to be executed by aprocessor using any suitable computer language such as, for example,Java, C++ or Perl using, for example, conventional or object-orientedtechniques. The software code may be stored as a series of instructionsor commands on a computer readable medium for storage and/ortransmission, suitable media include random access memory (RAM), a readonly memory (ROM), a magnetic medium such as a hard-drive or a floppydisk, or an optical medium such as a compact disk (CD) or DVD (digitalversatile disk), flash memory, and the like. The computer readablemedium may be any combination of such storage or transmission devices.

Such programs may also be encoded and transmitted using carrier signalsadapted for transmission via wired, optical, and/or wireless networksconforming to a variety of protocols, including the Internet. As such, acomputer readable medium according to an embodiment of the presentinvention may be created using a data signal encoded with such programs.Computer readable media encoded with the program code may be packagedwith a compatible device or provided separately from other devices(e.g., via Internet download). Any such computer readable medium mayreside on or within a single computer program product (e.g., a harddrive or an entire computer system), and may be present on or withindifferent computer program products within a system or network. Acomputer system may include a monitor, printer, or other suitabledisplay for providing any of the results mentioned herein to a user.

Any of the methods described herein may be totally or partiallyperformed with a computer system including a processor, which can beconfigured to perform the steps. Thus, embodiments can be directed tocomputer systems configured to perform the steps of any of the methodsdescribed herein, potentially with different components performing arespective steps or a respective group of steps. Although presented asnumbered steps, steps of methods herein can be performed at a same timeor in a different order. Additionally, portions of these steps may beused with portions of other steps from other methods. Also, all orportions of a step may be optional. Additionally, any of the steps ofany of the methods can be performed with modules, circuits, or othermeans for performing these steps.

The above description of exemplary embodiments of the invention has beenpresented for the purposes of illustration and description is notintended to be exhaustive or to limit the invention to the precise formdescribed, and many modifications and variations are possible in lightof the teaching above. The embodiments were chosen and described inorder to best explain the principles of the invention and its practicalapplications to thereby enable others skilled in the art to best utilizethe invention in various embodiments and with various modifications asare suited to the particular use contemplated.

1-20. (canceled)
 21. A system for identifying system posts for displayin a social network activity stream, the system comprising: databasesystem software stored on a non-transitory data storage medium forexecution by one or more servers of a database system, the databasesystem software operable to cause: processing information indicatinginclusion preferences of a user for including post data in a socialnetwork activity stream of an enterprise social networking systemimplemented using the database system, the inclusion preferencesidentified by one or more post rules; maintaining, using the databasesystem, a plurality of system posts associated with one or more customerrelationship management (CRM) records stored as data objects of a CRMsystem, one or more of the system posts indicating an event or an updateassociated with a CRM record; automatically identifying one or more ofthe system posts based on a first inclusion preference identified by afirst post rule; and providing the identified one or more system postsfor inclusion in the social network activity stream, the identified oneor more system posts configured to be displayed in association with oneor more visual indicators in a user interface on a display of acomputing device.
 22. The system of claim 21, wherein the inclusionpreferences are provided by an administrator, and wherein a post rule isuser-independent or user-specific.
 23. The system of claim 21, whereinthe inclusion preferences are submitted by a viewer, and wherein a postrule is user-specific.
 24. The system of claim 21, wherein the firstpost rule indicates one or more of a plurality of criteria.
 25. Thesystem of claim 24, wherein the criteria comprise a CRM record type, anoperation associated with the CRM record type, and an option to displaya system post in the social network activity stream.
 26. The system ofclaim 21, wherein the post rules comprise active rules and inactiverules, and wherein the first post rule is an active rule.
 27. The systemof claim 21, wherein the CRM records comprise one or more of: a case, anopportunity, a lead, an account, a contact, a task, a user profile, oran event.
 28. The system of claim 21, wherein the first post ruleindicates an attribute of a CRM record, the attribute identified in afield of the CRM record.
 29. The system of claim 21, wherein the firstpost rule indicates a characteristic of an interaction with a customerof an organization.
 30. The system of claim 21, wherein the one or morevisual indicators comprises one or more of: priority placement of theidentified one or more system posts in the social network activitystream, a highlight, a color, a hue, an icon, a badge, or a motion cue.31. A method comprising: receiving information indicating inclusionpreferences of a user for including post data in a social networkactivity stream of an enterprise social networking system implementedusing a database system, the inclusion preferences identified by one ormore post rules; maintaining, using the database system, a plurality ofsystem posts associated with one or more customer relationshipmanagement (CRM) records stored as data objects of a CRM system, one ormore of the system posts indicating an event or an update associatedwith a CRM record; automatically identifying one or more of the systemposts based on a first inclusion preference identified by a first postrule; and providing the identified one or more system posts forinclusion in the social network activity stream, the identified one ormore system posts configured to be displayed in association with one ormore visual indicators in a user interface on a display of a computingdevice.
 32. The method of claim 31, wherein the inclusion preferencesare provided by an administrator, and wherein a post rule isuser-independent or user-specific.
 33. The method of claim 31, whereinthe inclusion preferences are submitted by a viewer, and wherein a postrule is user-specific.
 34. The method of claim 31, wherein the firstpost rule indicates one or more of a plurality of criteria, the criteriacomprising: a CRM record type, an operation associated with the CRMrecord type, and an option to display a system post in the socialnetwork activity stream.
 35. A database system comprising: one or moredatabases storing a plurality of customer relationship management (CRM)records as data objects; and at least one server having at least oneprocessor capable of executing instructions configured to cause:processing information indicating inclusion preferences of a user forincluding post data in a social network activity stream of an enterprisesocial networking system implemented using a database system, theinclusion preferences identified by one or more post rules; maintaining,using the database system, a plurality of system posts associated withone or more of the CRM records, one or more of the system postsindicating an event or an update associated with a CRM record;automatically identifying one or more of the system posts based on afirst inclusion preference identified by a first post rule; andproviding the identified one or more system posts for inclusion in thesocial network activity stream, the identified one or more system postsconfigured to be displayed in association with one or more visualindicators in a user interface on a display of a computing device. 36.The database system of claim 35, wherein the inclusion preferences areprovided by an administrator, and wherein a post rule isuser-independent or user-specific.
 37. The database system of claim 35,wherein the inclusion preferences are submitted by a viewer, and whereina post rule is user-specific.
 38. The database system of claim 35,wherein the first post rule indicates one or more of a plurality ofcriteria, the criteria comprising: a CRM record type, an operationassociated with the CRM record type, and an option to display a systempost in the social network activity stream.
 39. A computer programproduct comprising program code to be executed by one or more processorswhen retrieved from a non-transitory storage medium, the program codecomprising instructions configured to cause: processing informationindicating inclusion preferences of a user for including post data in asocial network activity stream of an enterprise social networking systemimplemented using a database system, the inclusion preferencesidentified by one or more post rules; maintaining, using the databasesystem, a plurality of system posts associated with one or more customerrelationship management (CRM) records stored as data objects of a CRMsystem, one or more of the system posts indicating an event or an updateassociated with a CRM record; automatically identifying one or more ofthe system posts based on a first inclusion preference identified by afirst post rule; and providing the identified one or more system postsfor inclusion in the social network activity stream, the identified oneor more system posts configured to be displayed in association with oneor more visual indicators in a user interface on a display of acomputing device.
 40. The computer program product of claim 39, whereinthe inclusion preferences are provided by an administrator, and whereina post rule is user-independent or user-specific.
 41. The computerprogram product of claim 39, wherein the inclusion preferences aresubmitted by a viewer, and wherein a post rule is user-specific.
 42. Thecomputer program product of claim 39, wherein the first post ruleindicates one or more of a plurality of criteria, the criteriacomprising: a CRM record type, an operation associated with the CRMrecord type, and an option to display a system post in the socialnetwork activity stream.